home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / labrea.nasl < prev    next >
Text File  |  2005-03-31  |  3KB  |  129 lines

  1. #
  2. # This script was written by John Lampe...j_lampe@bellsouth.net
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10796);
  10.  script_version ("$Revision: 1.6 $");
  11.  name["english"] = "scan for LaBrea tarpitted hosts";
  12.  script_name(english:name["english"]);
  13.  
  14.  desc["english"] = "
  15. This script performs a labrea tarpit scan, by
  16. sending a bogus ACK and ACK-windowprobe to a potential
  17. host.  It also sends a TCP SYN to test for non-persisting
  18. labrea machines.
  19.  
  20. Risk factor : None";
  21.  
  22.  script_description(english:desc["english"]);
  23.  
  24.  summary["english"] = "LaBrea scan";
  25.  script_summary(english:summary["english"]);
  26.  
  27.  script_category(ACT_SCANNER);
  28.  
  29.  
  30.  script_copyright(english:"This script is Copyright (C) 2001 by John Lampe");
  31.  family["english"] = "Port scanners";
  32.  script_family(english:family["english"]);
  33.  exit(0);
  34. }
  35.  
  36.  
  37.  
  38. src = this_host();
  39. dst = get_host_ip();
  40. sport=3133;
  41. dport=rand() % 65535;
  42. init_seq=2357;
  43. init_ip_id = 1234;
  44. filter = string("src port ", dport, " and src host ", dst);
  45. myack = 0xFF67;
  46. init_seq = 538;
  47. init_ip_id = 12;
  48. winsize = 100;
  49. flags = 0;
  50.  
  51.  
  52.  
  53. # send two ACKs with a single byte as data (probe window)
  54. # Labrea in persist mode will ACK the packet below after the initial
  55. # "ARP-who has" timeout (defaults to 3 seconds, hence the 2 packets)
  56.  
  57. for (q=0; q<2; q = q + 1) {
  58.     ip = forge_ip_packet(ip_v:4, ip_hl:5, ip_tos:0,ip_off:0,ip_len:20,
  59.                          ip_p:IPPROTO_TCP, ip_id:init_ip_id, ip_ttl:0x40,
  60.                          ip_src:this_host());
  61.  
  62.     tcp = forge_tcp_packet(ip:ip, th_sport:sport, th_dport:dport,
  63.                           th_flags:TH_ACK, th_seq:init_seq,th_ack:myack,
  64.                           th_x2:0, th_off:5, th_win:2048, th_urp:0, data:"H");
  65.  
  66.  
  67.  
  68.     reply =  send_packet(pcap_active : TRUE,
  69.                         pcap_filter : filter,
  70.                         pcap_timeout : 3,
  71.                         tcp);
  72. }
  73.  
  74.  
  75. if(!reply)exit(0);
  76.  
  77.  
  78.  
  79. winsize = get_tcp_element(tcp:reply, element:"th_win");
  80. flags = get_tcp_element(tcp:reply, element:"th_flags");
  81.  
  82. # don't know when this would be true...but adding it nonetheless
  83. if (flags & TH_RST) {
  84.     exit(0);
  85. }
  86.  
  87.  
  88.  
  89. if ( (winsize <= 10) && (flags & TH_ACK) ) {
  90.       set_kb_item(name:"Host/dead", value:TRUE);
  91.       exit(0);
  92. }
  93.  
  94.  
  95.  
  96.  
  97. # now handle LaBrea in non-persist mode
  98.  
  99.     winsize = 100;
  100.     flags = 0;
  101.  
  102.     ip = forge_ip_packet(ip_v:4, ip_hl:5, ip_tos:0,ip_off:0,ip_len:20,
  103.                          ip_p:IPPROTO_TCP, ip_id:init_ip_id, ip_ttl:0x40,
  104.                          ip_src:this_host());
  105.  
  106.     tcp = forge_tcp_packet(ip:ip, th_sport:sport, th_dport:dport,
  107.                           th_flags:TH_SYN, th_seq:init_seq,th_ack:0,
  108.                           th_x2:0, th_off:5, th_win:2048, th_urp:0);
  109.  
  110.  
  111.  
  112.     reply2 =  send_packet(pcap_active : TRUE,
  113.                         pcap_filter : filter,
  114.                         pcap_timeout : 5,
  115.                         tcp);
  116.  
  117.  
  118.     winsize = get_tcp_element(tcp:reply2, element:"th_win");
  119.     flags = get_tcp_element(tcp:reply2, element:"th_flags");
  120.     if ( (flags & TH_ACK) && (flags & TH_SYN) && (winsize == 10) ) {
  121.         set_kb_item(name:"Host/dead", value:TRUE);
  122.         exit(0);
  123.     }
  124.  
  125. exit(0);
  126.  
  127.  
  128.  
  129.